<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <script>
    // 01 promise 承诺 决绝js中异步操作操作
    // 02 js异步操作：a. 回调 b.事件  c.订阅发布 4.promise 5. async与await
    // 03 相比较回调函数，避免回调地狱

    // 02 同步就是阻塞执行：上一行代码不执行完下一行不会执行
    // var a = 15;
    // alert(a);
    // console.log("def");

    // var  a = 15;
    // setTimeout(
    //   ()=>{ alert(a)},
    //   0)
   
    // console.log("def")

    // function biaobai(msg,delay,callback){
    //   setTimeout(()=>{
    //     console.log(msg);
    //     if(callback){callback()}
    //   },delay)
    // }

    // biaobai("你好我是老郑",3000,function(){
    //   biaobai("我很中意你",2000,function(){
    //     biaobai("你愿意吗，我有100000万QQ金豆",3000)
    //   })
    // })
    // 承诺：男生承诺有两个可能resolve兑现，reject拒绝
    function biaobai(msg,delay){
      return new Promise((resolve,reject)=>{
        setTimeout(()=>{
          resolve(msg)
        },delay)
      })
    }
    biaobai("你好我是老郑",3000)
    .then(res=>{
      console.log(res);
      return  biaobai("我很中意你",2000)
    })
    .then(res=>{
      console.log(res);
      return  biaobai("你愿意吗",3000)
    })
    .then(res=>{
      console.log(res);
      return  biaobai("我们家祖坟很好",5000)
    })
    .then(res=>{
      console.log(res)
    })
    


  function doit(){
     return  new Promise((reslove,reject)=>{
      var  n = Math.random();
      setTimeout(()=>{
        if(n>0.5){reslove("亲爱的，我给你买了个大house，前面是游泳池后面是花园，楼顶是停机坪")}
        else{
          reject("这个月房租都交不起了，给你买束塑料永生花")
        }
      },3000)
    })
  }
    doit()
    // then登录promsie的relove执行
    .then(res=>{
      console.log(res)
    })
    // 等待promise的reject执行
    .catch(err=>console.error(err))
  
  </script>
</body>
</html>